﻿using System;
using System.Collections;
using System.Linq;
using System.Text;
using Data;
using Utility;
using System.Collections.Generic;
using System.Data;

namespace DataAccess
{
    public class PhanCongControl
    {
        // tạo đối tượng của lớp LinqUtility , đối tương này sẽ xử lý trên bảng PhanCong
        LinqUtility<PhanCong> context = new LinqUtility<PhanCong>();


        // Tạo đối tượng database của linq
        QuanLyPhongHocDataContext db = new QuanLyPhongHocDataContext();


        // tạo đối tượng của lớp Connection , thực thi các câu lệnh sql trực tiếp mà ko sử dụng linq
        Connection con = new Connection();

        // Lấy danh sách toàn bộ dữ liệu trong bảng PhanCong
        public List<PhanCong> GetListPhanCong()
        {
            return context.GetAll();
        }

        // tạo
        public void InsertPhanCong(PhanCong pc)
        {
            context.Insert(pc);
        }

        // sửa
        public void UpdatePhanCong(PhanCong pc)
        {
            context.Update(pc);
        }

        // xóa
        public void DeletePhanCong(PhanCong pc)
        {
            context.Delete(pc);
        }

        // kiểm tra mã phân công muốn xóa có bên bảng lịch hay ko
        public int CheckDeletePCInLich(int id)
        {
            int pc = 0;
            try
            {
                pc = (from p in db.Liches
                      where p.PCID == id
                      select p).Count();
                return pc;
            }
            catch (Exception ex)
            {
                pc = 0;
            }
            return pc;
        }

        // kiểm tra mã phân công muốn xóa có bên bảng xếp phòng hay ko
        public int CheckDeletePCInXepPhong(int id)
        {
            int pc = 0;
            try
            {
                pc = (from p in db.XepPhongs
                      where p.PCID == id
                      select p).Count();
                return pc;
            }
            catch (Exception ex)
            {
                pc = 0;
            }
            return pc;
        }



        // Lấy 1 dòngn bộ dữ liệu trong bảng PhanCong theo id
        public PhanCong GetPhanCongById(int id)
        {
            return (from pc in db.PhanCongs where pc.PCID == id select pc).Single();
        }


        // Lấy lịch học chi tiết của các lớp
        public DataTable GetLichHocSinhVien()
        {
            string sql = @"select l.LIID , l.SoTiet , l.Tuan ,p.TenPH , m.TenMH , gv.TenGV , pc.MaGV  , lh.TenLop 
                          from Lich l ,PhanCong pc , MonHoc m , PhongHoc p , GiaoVien gv , LopHoc lh 
                          where pc.PCID = l.PCID and pc.MaMH = m.MaMH and l.MaPH = p.MaPH 
                          and pc.MaGV = gv.MaGV and pc.MaLop = lh.MaLop";

            return con.executeSelectQuery(sql);
        }


        //  lịch dạy của từng giáo viên
        public DataTable GetLichDayGiaoVien(string magv)
        {
            string sql = @"select l.LIID , l.SoTiet , l.Tuan ,p.TenPH , m.TenMH , gv.TenGV , pc.MaGV  , lh.TenLop 
                          from Lich l ,PhanCong pc , MonHoc m , PhongHoc p , GiaoVien gv , LopHoc lh 
                          where pc.PCID = l.PCID and pc.MaMH = m.MaMH and l.MaPH = p.MaPH 
                          and pc.MaGV = gv.MaGV and pc.MaLop = lh.MaLop and pc.MaGV ='"+magv+"'";

            return con.executeSelectQuery(sql);
        }
    }
}
